import { defineStore } from 'pinia'
import { ref } from 'vue'

// 数据状态库
// 请定义的时候 写好注释，方便别人阅读
const userState = {
  // 登录令牌
  token: '',
  // 角色（1：买家，2：卖家）
  // ....
}

export const useUserStore = defineStore(
  'user',
  () => {
    const userInfo = ref<any>({ ...userState })

    // 更新UserInfo
    const setUserInfo = (val: any) => {
      userInfo.value = val
    }

    // 清除UserInfo
    const clearUserInfo = () => {
      userInfo.value = { ...userState }
    }

    // 复原UserInfo 一般用不上
    const resetUserInfo = () => {
      userInfo.value = { ...userState }
    }

    // 是否登录 计算类型定义
    const isLogined = computed(() => !!userInfo.value.token)

    return {
      userInfo,
      isLogined,
      setUserInfo,
      clearUserInfo,
      resetUserInfo,
    }
  },
  {
    // 如果需要持久化就写 true, 不需要持久化就写 false（或者去掉这个配置项）
    persist: true,
  },
)
